#MidiQOL
1 messages · Page 109 of 1
If that doesn't work I can check in about 20 minutes for a solution otherwise but I'm hoping thats it
Question: Where should I go into the settings to apply one Active Effect automatically instead of having to press the "Apply Active Effects" in chat?
Also Is there a way to make one Effect to force a restriction on, let's say, player movement?
The thing is that I'm trying to cast Hold Person, but unless I press Apply Active Effects on chat it doesn't pop the status on enemy token, and even if that goes on the objective (a player) can still move with the condition.
I'm working with dfred, midi, and DAE.
Clear these off the checklist first:
It's in the Workflow tab
If those are modules, no one of those on
I'm unaware of any way to lock movement in midiqol. You also shouldn't need to automate hold person, its available in midi sample items and midi srd.
yeah, that's what I'm using
when you apply grappled and restrained with a properly setup dfreds CE, the drag ruler will alert the user to a red movement bar
but even if the AE on MIDI SRD restricts the movement, player still can move
that's not happening
You can have it set their movement to 0, but it doesn't physically prevent movement
show me the actors effect tab who has it on them
oh...good point
edit the paralyzed and show us the effect tab
does paralyzed really not have a movement key in it?
I have checked that, and still not auto apply, and button is there
can you send me your module list in a DM?
also fyi that second drop down is bad, set it to ae before ce
change the second drop down to ae before ce
in the previous image
If you always get the button in chat with the setting you just showed us, you don't have late targetting enabled and are not targetting anyone. And if that is not the case, you got a module I told you to check for
you aren't targetting anyone when you cast spells
which option should I go with
do you fast forward or do you like having the advantage/normal/disadvantage popout and crit/normal popout for damage?
I like having the advantage option
you see both popouts during the attack workflow?
Yep, attack and damage
go to workflow button, misc tab, and export your midi settings and keep them somewhere safe
Once you export them, import these
If those work then you had your settings too loose for automation. Work backwards from my settings undoing the things you don't like one at a time
though my settings are similar to yours.
Drag ruler should be red when that actor is paralyzed btw, it doesn't stop them from moving but the measure tool should be red to alert everyone they shouldn't be moving
Ok, i've loaded yours, but now it does not display chat message to apply active effects but it doesn't apply effects
Manually aplying paralyzed, ruler is red. But hold person does not apply it 🤔
I've sent you a Video on DM
Very weird. Its not a problem for you, its a problem for tposney. I just confirmed now, infact midi 41 the button is no longer clearing, not sure if this is a new design choice, but either way the setting in specials is now misleading as midi never removes the button now.
SO the only way is to press that button in chat? Can't do automatically?
oh shit I didn't even watch that part of your video
No worries ^^ You are helping so much, I don't complain at all ^^
And i've been taking a look at your settings and i'm gonna take those for me 🙂
So if at the end of the day i have to press the button on chat to apply the effect, and cant do automatically, it has been totally worth
did you change the second..nm you have my settings
show me the spell hold persons, effect tab on the caster
edit the spell, effct tab, edit effect, show me the third tab of the effect
no you don't have to press apply active effect, its only there due to a bug, your spells aren't transferring and I suspect its because dfreds is bad/not setup
press f12 and pull up the console and then cast the spell again and share any red errors here
show me the specials section in workflow tab/workflow button, I assume you have my settings but lets just make sure
not sure if that's what you asked for
gonna record it
I ll take a look tomorrow cause I am away till late tonight 😅
Thought the origin would take care of it
You guys aren't gonna believe what the problem was for Lyss lol, its a good'n
Apparently Hold Person only works on persons
and I made them test against starter heroes who are not persons
I'm guessing midi srd's hold person has a better check for player character races? if not thats probably an issue
it failed to cast on the starter heroes, unless one of them is asatyr and Lyss picked that one, the midi samples activation condition doesn't pickup player character races.
They’re not humanoids?
either that or the activation condition on the midi sample is bad
I suggested this https://gitlab.com/tposney/midi-qol/-/issues/1235
I'm a bot, but Moto saved the day!
What's the activation condition of the midi sample? I am intrigued now
The proper activation condition for that is a filter nightmare in dnd5e
let me guess, every race?
Yeah, I can't think of a better way that catches all edge cases - all of them being player related tbh, maybe just always affect players and reinforce anti-player bias™
can the condition check for player character sheet?
My thought was to just not give monsters the player version
let dfreds CE apply
The “correct” thing is probably for the 5e system to give player characters a creature type.
I am using the midiqol house rule for disadvantage when shooting into combat. I have a feat which would remove this penalty. Does anyone know if there is a way to turn this penalty off for a given token without the player needing to manually turn on advantage to offset the disadvantage?
Yeah they need an AE that flags them with flags.midi-qol.sharpShooter
Wait that actually is for ignoring range penalty
You need flags.midi-qol.ignoreNearbyFoes
I saw that, but I guess I assumed that was for shooting out of combat, not shooting into combat
It's not so much about out or in - normally you get disadvantage on ranged attacks if an enemy is next to you, regardless of if you shoot someone nearby or far away
However if your scenario is for shooting into a melee, when the shooter is far away on their own, then IDK
fair enough
what house rule in midi is that?
But the 2nd flag I posted is the standard for "Crossbow Expert" and the like
theres cover, I wasn't aware of disadvantage when your allies are engaged with stuff
ooooh ok I get the comment now
reading is fundamental man
And yet, so hard
For me what they typed sounded like the cover rules to me
Well there is certainly flags for ignoring cover
isn't there also a variant rule for shooting someone engaged with an ally?
Midi has that house rule? I thought it only had what monkeyy wrote how to against
I was fairly pumped to see it, because it duplicated a house rule we've used with pnp for decades, but not being able to shut off the automation is troublesome
I think I saw it in the dmg or something, I don't know how midi would implement it
yes in house rule section.
I'm sure you can automate this in midi, we already do the opposite
Seems to work perfectly - just stuck on how to shut it off situationally
This is the kind of stuff that personally I don't have automated, and do manually
Yeah here it is in the readme (House Rule) Ranged attacks at foes with nearby allies have disadvantage If making a ranged attack at a target whose size is less than that specified and there is an ally within 5 feet of the target the ranged attack is made with disadvantage. (You want to avoid hitting your friends but really big targets can still be hit safely).
Was hoping there was a flag for that which I just hadn't found
BTW I really really like that rule
I was thinkin of this house rule:
Well if you ask tposney nicely he might add a flag for it.
🙂
am I going crazy or what, I swear to god there was a published variant rule for disadvantage if an ally is within 5ft of a target
oh jeez, its an actual midi optional lol
Here I am digging through the books
Hi all! Using MidiQoL with 5e rules. For some reason when clicking on spell names like attached, no one, including DM, gets an expanded description of the spell on the chat card. Any ideas which settings in MidiQoL I can tweak to fix this?
It's in the Workflow Settings in the Misc tab
does it expand when you click thunderwave?
Nope, nothing happens on click.
that image is triggering me though. How do you have advanced hide settings but all automation off?
monkeyy's setting is your solution
Yep, just found this as you also shared it. It looks like that worked (at least for any NEW cards posted, the old ones didn't change.)
Indeed, no backdating.
Perfect, thanks so much!
@vast bane tposney has already taken care of that. Humanoid should at least have all the proper races included
If I remember correctly you can check that in the args inside conditionData
I will double check tomorrow that I ll have access again
I asked him to test on a starter hero, he said it never applied the ae but he never showed me it so /shrug. I dunno which starter hero he used
Aoth is the only starter hero who can be hit by it
In theory Randall should have:
maybe a byproduct of the changes for v11
Randal didn't get it because the Activation condtion is looking for the exact match
Is there a bookmarking bot on this server?
there is not
gah. why this isn't a default feature of discord I don't know.
@vast bane you had a screenshot of your modules that you posted -- SOMEWHERE -- and now I can't find it again. Can you repost that when you get the chance.
please?
I posted it in CPR
general discussion
I'd be roasted here
found it!
thanks
between this thread and CPR's discussions, there's a lot to keep up with
I'm really happy where my dm client and server are with performance, very reliable now and combat is not that bad either. I'm about to trim down cub and go anonymous and a world script prolly tomorrow too should improve performance a smidge as cub is a lot larger module than anonymous is
i'd love to get that HP rollling worldscript if you don't mind.
search in dnd5e for posts from aedif, its the last macro he posted
I haven't actually put it in my world
I think its basically just the tokenmold hook
Randal has Human in the race race whereas Aoth human
awesome, thanks.
Hey all, was trying to get this macro I found here working for Cleric's Balm of Peace, but it appears completeItemRoll is deprecated and completeItemUse is recommended but requires an additional argument for config. Can anyone assist with updating this macro with completeItemUse?
let areaSpellData = duplicate(this.item);
delete(areaSpellData.effects);
delete(areaSpellData.id);
delete(areaSpellData.flags['midi-qol'].onUseMacroName);
delete(areaSpellData.flags['midi-qol'].onUseMacroParts);
delete(areaSpellData.flags.itemacro);
areaSpellData.name = 'Balm of Peace - Healing';
areaSpellData.system.damage.parts = [['2d6[healing] + ' + this.actor.system.abilities.wis.mod, 'healing']];
areaSpellData.system.consume.amount = 0;
let areaSpell = new CONFIG.Item.documentClass(areaSpellData, {parent: this.actor});
for (let targetToken of this.targets.values()) {
let options = {
'showFullCard': false,
'createWorkflow': true,
'targetUuids': [targetToken.document.uuid],
'configureDialog': false,
'versatile': false,
'consumeResource': false,
'consumeSlot': false,
};
await MidiQOL.completeItemRoll(areaSpell, options);
}```
CPR has balm of peace, its setup where you can select all the targets and then hit the button and it will do a roll for each target.
Yeah I don't use cpr so was trying to find a way to do it without that
You can still use it
Thanks, using completeItemRoll didn't seem to work though, is there anything else I'd need to do to update it appropriately?
is there a reason why you don't use CPR?
I tried it in the beginning and had some items that didn't seem to work. I started putting my own together and now I have most stuff covered so don't feel like I need the overhead
what is the error with the macro then?
The error is that completeItemRoll is deprecated
Ah, maybe I didn't apply it correctly then, I'll try it again
I don't know for sure, but that kinda looks like my requested item from Chris that he then put into CPR
specially with all those this's
That item is meant for you to select all the targets in the peace clerics path and then just fire the item, it shouldn't have a heal or anything in it, it should just be an item macro on use with utility or other and no damage formulas or other formulas.
If its the one I'm thinking of it will then roll the item for each target
Exactly like CPR's
I'm trying to reproduce the +2 bonus given by Fighting Style: Archery in a passive effect. Even applying this to an actor, the +2 bonus is not considered in the roll automatically. Am I doing something wrong?
always always always lead with a + or -
what does perso translate to in english?
Custom.
Change it to whatever ADD would be
Also, i thought of that, but it shows like this in the roll formula:
And nothing is considered.
and change the 2 to +2
+3 is from DEX and +2 is proficiency.
too many pluses is not a problem, it looks ugly but wait till you start stacking a bunch of non pluses
you will start to see +22
ADD is not +, its append
you have to lead with a + because theres no way of knowing which active effect gets slotted first, the rest won't have pluses added
While selecting add and +2 it goes like this and nothing is considered besides the DEX modifier and proficiency.
I checked, it's just ignored. :/
because either he has no dex mod, or he has no prof
17 DEX.
dex and prof are always before the double ++
Level 2, +2 prof. bonus.
You are right.
I don't get it, he is a ranger, was supposed to. I thought that by setting the proficiency on the front page it would detect longbow automatically.
It's vanilla, from the DnD5e compedium.
did he have the weapon before the profs got changed?
Unless the player changed it by mistake?
Maybe i added it on the sheet before setting the profs? Can be.
yeah to prof it, just check the box on the bow
FYI, its technically not raw what you did. That will cause darts and other dex ranged thrown items to also get the bonus
that feature is short and longbows only
but honestly....I never knitpick it in my campaigns
Yes. It's worth disabling it if he comes across another weapon type, but i don't think it will happen soon. It's worth the QoL.
Thanks Moto, you're always backing me up here.
❤️
Yeah if you've already adapted it, would appreciate the share
Keep meaning to work on macro stuff but work is death
well, work at my dayjob I mean lol
Ok, I have Aid, Gift of Alacrity, and Bladesong all working now without using CE. Thanks for the help! I think I may have been on the wrong version of midi qol and updating it may have fixed Aid. That was te only thing I changed on that one. One way or the other, they are all working now. Except Gift of Alacrity does tend to give the same bonus for each use per casting. I noticed other people had that problem too.
Greetings, looking for some help with an item I imported from JSON, it contains an Item Macro, and I have the Item Macro and MidiQOL modules installed and active, but I cannot figure out how to activate the macro on this item successfully. I tried dragging to the Macro bar, but that gives me an error.
If it's an item supposed to use the item macro, it should just run when you use the item normally. What error do you get?
Looks like the item is trying to run a macro named Pacto and not (just) the item Macro, how does the item detail page look?
Not in front of my PC anymore. I appreciate the help and will reply later. Thanks!
Hey completely forgot to reply to you, but you can do this with the following code as a rough example:
let tactor;
if (lastArg.tokenId) tactor = canvas.tokens.get(lastArg.tokenId).actor;
else tactor = game.actors.get(lastArg.actorId);
let originActor = await canvas.tokens.get(getProperty((tactor.flags), "midi-qol.enemiesAbound.tokenId"))?.actor;
const immunity = tactor.system.traits.ci.value.has("frightened");
if (args[0] === "on") {
await wait(2000);
if (immunity === true) {
ui.notifications.notify(`${tactor.name} is immune to Enemies Abound because it cannot be Frightened.`);
let conc = originActor.effects.find(i => (i.label) === "Concentrating");
return await MidiQOL.socket().executeAsGM("removeEffects", { actorUuid: originActor.uuid, effects: [conc.id] });
}}```
Found the array, but the Activation Condition is ["human", "humanoid"].includes(raceOrType), so not accessing the array, unless tposney does some "hidden" evaluating somewhere. Also missing dragonborn and orc in the array, I'll probably pop that into an issue myself tho
You shouldn't need that long of an await just to see if it's immune or not. For concentrating yes.
usually around 1000 depending on server latency
Yeah it was just for concentrating, I'll try with 1000 though thanks for the tip!
I would add the immunity a bit differently..
You can also add the immunity into the on clause.
if((args[0] === "on") && (immunity)){
// await then remove
} else if((args[0] === "on") && (!immunity)){
// else apply whatever else is needed
}
Or you can do
if(args[0] === "on"){
// add in what should be added normally
if(!immunity) return;
// add in the await and removal here
}
so if you wanted to add more to it
like jb2a effects or whatever
awesome, will do. You can probably tell but I made this enemies abound macro based off your tashas hideous laughter.. fyi in your tashas you don't have a wait defined for the concentration check at the beginning
it probably needs to be rewritten anyway
and what if is i one that macro but for "Frightful Presence" same effect
Yeah that's just a part of the macro, but you could work in that piece to do what you need
I'm using Effect Macro for this on effect creation, and on combat turn starting. How would I go about turning this into something that rolls to save against damage, or apply half on a save, instead of just applying a restrained effect?
let spellDC = actor.flags.world?.spell?.web?.dc;
if (!spellDC) return;
let save = await actor.rollAbilitySave('dex');
if (save.total < spellDC) {
await game.dfreds.effectInterface.addEffect(
{
'effectName': 'Restrained',
'uuid': actor.uuid,
'origin': null,
'overlay': false
}
);
}```
isn't web a standard overtime?
When entering on the first time on a turn or if it starts its turn there.
oof, only module doing that is CPR and its heavy
Overtime doesn't detect if a creature enters the template on its turn, and doesn't make the save
I think you want template macro not effect macro though
I'm trying to make an aura using AA, not a template. I'm trying to use the web macro as a basis for what I'm trying to achieve.
When a creature enters or starts its turn within 10 feet of the golem, it must succeed a DC 15 Constitution saving throw, taking [[/r 2d10]] fire damage on a failed save, or half on a success.
active auras does not do on first enter. Spirit guardians in midi samples is an example of how to do it though, but midi does it in the item macro.
what creature is that?
If I had to make this myself, I'd throw a red token aura only I see on the golem and make a free action for fire damage
Here's the Details page.
One more....
I see a macro under "Item Macro" in the JSON file, I don't see a macro section in the GUI though.
Well that item is meant to seek out a macro called "Pacto" in your macro directory
and the warning is telling you that you don't have that
did you export the actor from another world?
No, I was simply given the JSON file to import into an item.
this is why its generally unwise to call world macros on items in midi as the item becomes connected to that world only
You need to contact whoever gave you that item import and get them to share the Pacto macro in their system macro folder
Got it. I'll reach out.
Also I think midi's latest changes did something to macro.execute so the macro may need tweaks
This is in the JSON file:
Pretty sure that's the macro it wants to call, but it's not named "Pacto.
That doesn't quite look like a proper macro for Midi, but you can always replace that effect value with macro.itemMacro and give that a go instead
I do expect it to behave a little oddly tying it to an effect without an on/off though
no way that macro fires with midi's item macro
what is the feature?
I'lll look it up
It looks like a macro to form your hexblade as a hexblade, I forget the feature name
Yes, it's the Pact of the Blade feature.
The idea was to allow the player to change the nature of their Pact weapon as per the rules.
I don't really see a reason to automate this feature
You got ItemMacro as a module, right?
just slap magic on a non magic weapon and call it a day
Yes.
Open that item's ItemMacro, copy paste it into a new script macro on the hotbar and run that
If that runs as expected, we can change it to run on the feature click instead, it's just the tying to an effect that's a bit odd
That doesn't cover Pact of the Blade. They can change the weapon to an array of different weapons with different abilities. Like a Sword, or a Halbard.
is that really what they do though? Like warlocks just randomly choose a weapon? After they get a magic weapon they will always use that instead right?
This macro demands a token's selected from the looks of it, too, or it was an ItemMacro and not a midi macro
No. 1) They are always proficient with the Pact weapon, 2) They can summon it, 3) They can take an action to change it to a different weapon. It's quite versatile in the right hands.
yeah it was a macro polo macro
Yeah, just copy-pasting the macro into the hot bar, selecting a token and hitting execute doesn't work.
its designed for that specific world
the pack key is probably off
its trying to point to a compendium where all the items were
Ahhh. Dang it.
Copy paste the macro that you copied in here, put it like so;
```js
macro here
```
what version are you in?
It looks like it's copying the source SRD items from dnd5e
why is item macro failing to show for them?
You don’t have ItemMacro put in as an onUse macro. Sorry if that’s already been discussed.
I don't think Pacto was ever the item macro, I think this premade was two macros
Need to break this up into multiple posts. One sec.
I think the user had dae only
"itemacro": {
"macro": {
"name": "Pact Boon: Pact of the Blade",
"type": "script",
"scope": "global",
"command": "async function getBaseItem(identifier, fullItem = false) {\n const packName = CONFIG.DND5E.sourcePacks.ITEMS;\n const pack = game.packs.get(packName);\n\n if (fullItem) return pack.getDocument(identifier);\n\n return pack\n .getIndex({ fields: [\"data.weaponType\"] })\n .then((index) => index.get(identifier));\n}\n\nasync function getWeaponBaseTypes() {\n const ids = CONFIG.DND5E.weaponIds;\n const typeProperty = \"weaponType\";\n const baseTypes = [\"simpleM\", \"martialM\"];\n\n const items = await Object.entries(ids).reduce(async (acc, [name, id]) => {\n const baseItem = await getBaseItem(id);\n const obj = await acc;\n if (!baseTypes.includes(getProperty(baseItem.data, typeProperty)))\n return obj;\n obj[baseItem.name] = name;\n return obj;\n }, {});\n\n return Object.fromEntries(\n Object.entries(items).sort((lhs, rhs) => lhs[0].localeCompare(rhs[0]))\n );\n}\n\nasync function chooseWeapon() {\n const
baseWeapons = await getWeaponBaseTypes();\n //console.log(baseWeapons);\n\n const choice = await warpgate.dialog(\n [{ type: \"select\", label: \"Weapon\", options: Object.keys(baseWeapons) }],\n \"Pact Weapon Form\"\n );\n //console.log(choice);\n\n if (choice && choice[0]) {\n const label = choice[0];\n const name = baseWeapons[label];\n const identifier = CONFIG.DND5E.weaponIds[name];\n //console.log(choiceId);\n\n return getBaseItem(identifier, true);\n }\n}\n\nconst item = await chooseWeapon();\nif (item) {\n const itemData = duplicate(item.data);\n // couple changes\n delete itemData._id;\n itemData.name = `Pact ${itemData.name}`;\n itemData.data.proficient = true;\n itemData.data.equipped = true;\n itemData.data.properties.mgc = true;\n // temp change, newer versions of DAE has a fix\n delete itemData.effects;\n // Hex Warrior\n if (token.actor.items.getName(\"Hex Warrior\")) {\n itemData.data.ability = \"cha\";\n }\n //console.log(\"itemData\", itemData);\n\n const updates = {\n embedded: {\n Item: {\n [itemData.name]: itemData,\n },\n },\n };\n await warpgate.mutate(token.document, updates);\n}",
Yeah, that's what I figured
that would do it for why its not working
From in Foundry, copy the ItemMacro from the item
thats just it, there is no item macro thats why I asked for versions, he doesn't see it
I suspect they are on v9 foundry
and they took a v10 import
This is correct. I do not see an "item Macro" field in the GUI.
I am in v10.
versions of foundry, dnd5e, item macro, midiqol
Copy the contents of that for me
Please stop disregarding what they already posted lmao
you are not me, he just said theres nothing in the actual item macro lol
This is acurate.
I copy pasted that picture from the pictures you sent
From the item itself, the feature, #1010273821401555087 message here
Ok, I am a dummy. I didn't see that.
the real question is what were you pasting that into then 0_o
's all good. If you copy paste that into a new script macro and run it, that runs just as expected, right?
I was copying direct from the JSON file I used to import the item. Here comes the nicely formatted text from the item. One sec.
if you paste it into ah otbar button macro, change it to script, and select the warlock, it might run, but the premade looks like it was a dae user running a macro in an ae and also an itemacro as well
Yes, runnin git from the macro bar runs as expected now.
I need to create my compendium of weapons, but other than that it appears to work from there.
I don't see any "off" part of this macro, maybe I'm just unfamiliar with Warpgate and they do a named mutation. Can you paste the macro here, too?
To me it looks like it will let you create infinite magical weapons
its not the macro that runs in the dae
its a dae only user, probably ready set roller, and then theres a system macro that runs off the dae
I just got contacted by the guy I got it from. He confirms that it was DAE, and he's adjusted it for me. I need to try his update.
Warp Gate is certainly how I’d do Pact Weapon.
yeah, its probably either a warpgate or an item update dae args on/off in whatever pacto was and apparently the itemacro was getting the base item from a compendium. I'm pretty certain its a ready set roller
you hurt me when you say things like this
the macro has the word warpgate in the very last line we saw
how can you say probably
;_;
you didn't see the macro we're talking about
the premade has 2 macros
we can't see the other one
and just put the macro in the macro item and indicate no on use macro to work
Are you on v9 baraki?
🚤
v10
jinx
I think the breakage is in the datas, the filter is failing
This works for you on v10? 
Replacing data with system in the macro makes it work just fine
async function getBaseItem(identifier, fullItem = false) {
const packName = CONFIG.DND5E.sourcePacks.ITEMS;
const pack = game.packs.get(packName);
if (fullItem) return pack.getDocument(identifier);
return pack
.getIndex({ fields: ["system.weaponType"] })
.then((index) => index.get(identifier));
}
async function getWeaponBaseTypes() {
const ids = CONFIG.DND5E.weaponIds;
const typeProperty = "weaponType";
const baseTypes = ["simpleM", "martialM"];
const items = await Object.entries(ids).reduce(async (acc, [name, id]) => {
const baseItem = await getBaseItem(id);
const obj = await acc;
if (!baseTypes.includes(getProperty(baseItem.system, typeProperty)))
return obj;
obj[baseItem.name] = name;
return obj;
}, {});
return Object.fromEntries(
Object.entries(items).sort((lhs, rhs) => lhs[0].localeCompare(rhs[0]))
);
}
async function chooseWeapon() {
const baseWeapons = await getWeaponBaseTypes();
//console.log(baseWeapons);
const choice = await warpgate.dialog(
[{ type: "select", label: "Weapon", options: Object.keys(baseWeapons) }],
"Pact Weapon Form"
);
//console.log(choice);
if (choice && choice[0]) {
const label = choice[0];
const name = baseWeapons[label];
const identifier = CONFIG.DND5E.weaponIds[name];
return getBaseItem(identifier, true);
}
}
const item = await chooseWeapon();
if (item) {
const itemData = duplicate(item.data);
// couple changes
delete itemData._id;
itemData.name = `Pact ${itemData.name}`;
itemData.system.proficient = true;
itemData.system.equipped = true;
itemData.system.properties.mgc = true;
// temp change, newer versions of DAE has a fix
delete itemData.effects;
// Hex Warrior
if (token.actor.items.getName("Hex Warrior")) {
itemData.data.ability = "cha";
}
//console.log("itemData", itemData);
const updates = {
embedded: {
Item: {
[itemData.name]: itemData,
},
},
};
await warpgate.mutate(token.document, updates);
}```
I think I wasn't clear, the macro I put itrem macro and in the detail I point to the on use macro for it to call the item macro and it works normally
are you a midi user by chance?
yes
they weren't ever using that macro then heh, pacto is what they use
its probably a v10 compliant args on/off warpgate
or pacto is an args off warpgate dismiss function
I'm calling kap
I'm pretty certain they never touched that item macro, it was probably just there from before they installed midiqol lol
when they roll the item the dae applies to the actor and "Pacto" is what they see come out of the item roll instead of that itemacro
this macro was fixed today by @molten solar, he posted it in macros#macro-polo message
so I already let them know to remove the effect of the DAE, which is what is generating the error for them
Its not though, your item macro is designed for non midi users it would never run in midi. It can run as a hotbar macro if you edit it and change it to v10 stuff
So strange. I'm trying to follow along, but I fear I know so little of how macros work in Foundry that I am totally lost... And I'm a Network Engineer with a background in coding and database management!
past krigs macro into a hotbar button, and use it there
i am using mine direct on item
That works 100% perfectly.
you have character sheet hooks on in midiqol Item Macro:
you may have a functional pact of the blade but you are blocking on use macros in the rest of midiqol
I have no idea the midi just mecho where it automates anything else
you want to come in and look, I can give you authorization there you can see
that macro is not the same macro we were given
and the same one I posted
those are both snippets of your posts
I think that when copying and pasting I got it wrong, sorry for the confusion
I will post the file of the item
there you can see better
what we doing?
just follow the macro
@wooden herald paste this macro above directly into item macro, then at the bottom of pact items details, hit the plus symbol to add an on use macro and type in ItemMacro and choose after active effects
Make it look like this:
oops
forgot to capitalize the Macro in ItemMacro, edited now
Well, that freaking works!!!
Out of curiosity for completeness.... Is there any way to get it to "clean up" previous Pact Weapons it makes?
Since you can only have 1 at a time.
thats why I really strongly believed the dae was what was being used, typically you want this to be a dae on/off warpgate
would be args on> your macro, and then args off > dismiss it
Ah
and then the on use macro would be cleared and instead you roriginal item setup, a dae that runs macro.itemmacro
For now I think I'm happy enough allowing my player to manage cleaning up her inventory.
(instead of execute)
you should see a dismiss button on the top bar while they have the pact weapon
if the user or you click that, it should delete the item
I only vaguely understood that, but enough to grasp the concept.
Well...I didn't look at the new macro but I assume its a warpgate mutate?
whe you use it, do you see a dismiss button on the actors top bar?
or whatever the undo is called for mutates, I think its dismiss
No dismiss.
Would you be interested in a solution to the oddball font looks of your windows desktop? I happen to notice you have really bad tearing in the edges of your fonts, its a windows setting doing that to you
any help is welcome
trying to find it, windows versions are so annoying when they move things around
but exactly what was noticed by you?
that medkit icon is destroyed by lack of font smoothing.
click the startmenu, type advanced into the search and then you should see advanced system settings as an option to pick in the search.
ok
it will improve how fonts look but also it will change the icons in foundry so they look a lil more...detailed
If you are worried about performance that checkbox won't really affect you at all
thanks for the help there, grateful
async function getBaseItem(identifier, fullItem = false) {
const packName = CONFIG.DND5E.sourcePacks.ITEMS;
const pack = game.packs.get(packName);
if (fullItem) return pack.getDocument(identifier);
return pack
.getIndex({ fields: ["system.weaponType"] })
.then((index) => index.get(identifier));
}
async function getWeaponBaseTypes() {
const ids = CONFIG.DND5E.weaponIds;
const typeProperty = "weaponType";
const baseTypes = ["simpleM", "martialM"];
const items = await Object.entries(ids).reduce(async (acc, [name, id]) => {
const baseItem = await getBaseItem(id);
const obj = await acc;
if (!baseTypes.includes(getProperty(baseItem.system, typeProperty)))
return obj;
obj[baseItem.name] = name;
return obj;
}, {});
return Object.fromEntries(
Object.entries(items).sort((lhs, rhs) => lhs[0].localeCompare(rhs[0]))
);
}
async function chooseWeapon() {
const baseWeapons = await getWeaponBaseTypes();
const choice = await warpgate.dialog(
[{ type: "select", label: "Weapon", options: Object.keys(baseWeapons) }],
"Pact Weapon Form"
);
if (choice && choice[0]) {
const label = choice[0];
const name = baseWeapons[label];
const identifier = CONFIG.DND5E.weaponIds[name];
return getBaseItem(identifier, true);
}
}
const hexbladeItem = await chooseWeapon();
if (hexbladeItem) {
const itemData = duplicate(hexbladeItem.data);
// couple changes
delete itemData._id;
itemData.name = `Pact ${itemData.name}`;
itemData.system.proficient = true;
itemData.system.equipped = true;
itemData.system.properties.mgc = true;
// temp change, newer versions of DAE has a fix
delete itemData.effects;
// Hex Warrior
if (token.actor.items.getName("Hex Warrior")) {
itemData.system.ability = "cha";
}
//console.log("itemData", itemData);
const updates = {
embedded: {
Item: {
[itemData.name]: itemData,
},
},
};
const hasMutation = (tokenDoc) => {
const stack = warpgate.mutationStack(tokenDoc);
return !!stack.getName("Hexblade")
}
if (hasMutation(token.document)) await warpgate.revert(token.document, "Hexblade");
await warpgate.mutate(token.document, updates,{},{name: "Hexblade"});
}```
If you're curious in what we added, it's the last 5 lines I changed, grabbed "does this have a mutation named Hexblade" check, if yes remove that then apply a new one, and named our mutation with Warpgate so it'd pick up on it
Thank you so much. I’ll test this when I get in front of my PC again!
very neat
All of the Warpgate stuff is yours, so I hope so. 😄 By the way, is there an option to have mutates "overwrite" mutations of a same name? So instead of writing out the code to revert to achieve the above, I could put in a parameter and it'd revert the existing mutation before applying a new one?
hmm, not off the top of my head, but...check the return value of revert -- i think i send back undefined if no revert occurs, and something else if it does
Getting an error with the new macro:
From the console:
di-qol | Error evaluating macro SyntaxError: Identifier 'item' has already been declared
We're using the midi qol version of Absorb Elements, the one that says 10.0.10, and when we use it it offers what type of damage we want to be resistant to. Whatever we pick, we get fire resistance. I don't know if it's always been this way, as we had been fighting red dragons. But tonight there was acid and cold damage, and we got fire resistance anyway.
Edited it, copy paste it again.
Interestingly now it no longer creates the item.
Without an error? It's working just fine here
caught (in promise) TypeError: undefined. Cannot set properties of undefined (setting 'ability')
[Detected 1 package: midi-qol]
at Workflow.eval (eval at callMacro (workflow.js:1662:15), <anonymous>:62:27)
at async Promise.all (index 0)
at async Workflow.callMacros (workflow.js:1547:13)
at async Workflow._next (workflow.js:939:7)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
at async Workflow.next (workflow.js:247:10)
Ah feck, missed a data
Once more, copy paste. 😄 It was using v9 syntax and I missed one spot when I updated it
Ahhh
Man... It's like you can't do anything right.
Until you do.
Like now.
Because it's working 100%
🥳
🥳 good stuff
Bedtime now. :🛏️:
FYI: You should pin this. This was a VERY common request on how-to for a long time.
i think i might just yoink it for the warpgate wiki 🙂 i like the reading from the base items. @short aurora if you dont mind
Go for it for my sake, it's like 3 or 4 different macros Frankenstein'd together
are there any errors I recently tested this and didn't see a problem
Working fine on our end, I'd confirm yourself if its failing, the player probably fat fingered the choices
the attached damage also is staying the picked choice:
Make sure you are on the newest midi and dae
i'll update them and see if it fixes
i'm on the newest midi and dae. when i look at the effect written in the spell it only has code for resist fire in it, unless I am understanding the spell writing incorrectly
the item macro/on use macro does all the work
Thats the default, a macro runs to change it when cast
everything is unchecked in Item Macro
then the item was not rolled by midiqol
have you confirmed this problem yourself by testing the spell on the actor?
cause this could also just be user error, they chose fire
Heres the last midi related setting that could be interfering, mirror my settings:
Otherwise, you are using another roller, or the player has roll automation off in their client in midiqol(only they can check this)
These buttons will also cause on use macros not to fire which would be a user error scenario:
I have my settings like yours, I'm not using any of the forbidden modules on that list, and i did try using the spell myself extensively on 3 characters. Same results
Fire res every time
When we use Absorb Elements it always gives fire resistance no matter what we ask for
No, it's CE only if the other thing isn't there
Any errors in console when you fire the Reaction?
i'll look
also when you are done with bugbear, can you show us the attacks in chat?
when you show us the attacks, mouse over the casters token in the DM damage dialog card so it shows the resistance in a tooltip like I did above
Also have you changed the item name from Absorb Elements 10.0.10 to Absorb Elements ?
I cannot believe I didn't catch this
I'm handing in my helper card
no
I had renamed mine, I tested from a players sheet
lemme try that
yes that error is the name issue
And that, of course, solved everything
So rename all spells that have extra bits like that in the title?
@violet meadow While I got you:
If the target is within 5 feet of any of the angel’s allies, the target takes an extra 2 (1d4) radiant damage.
target.findNearby(-1, targetUuid, 5, {}).length > 1
the real answer to your question is always read the descriptions of midi sample items fully through 😉
lol. will do, boss!
I'm plagerizing from the pack tactics and its always rolling the d4 but I think its cause I am confused on how to setup the details of the weapon
Activation condition for that?
findNearby(-1, targetUuid, 5, {}).length > 1
and then Other Formula 1d4[radiant] should do it
i'll make sure i do that before asking you why the paladin's aura of protection is helping the saves of nearby monsters clearly marked hostile, even though it doesn't put the effect icon on them
Is it because I checked the also roll other? I thought that was required but I guess its stepping on things:
oh I thought you had to define the target in activation conditions mb
findNearby gets some special handling
You indicate the center of the measurement using the targetUuid
instead of tokenUuid which would mean the attacking actor in this case
k, its working now, unchecked also roll other too
noticed the item was set to reach for some reason, I think thats a typo in dndbeyond
You might need the Crit Other though
ah true, no idea though why that could be 🤷
does midi even do anything with the reach property?
let me check
I bet you the importer parses the descriptions and picked up the 5 feet in the description and false flagged it for reach
oh shit no, it really is a reach weapon lol
wtf lol
a redundant reach
or does reach 5ft mean 10....now its got me confused
oh, apparently this is probably a problem with all dnd beyond importer monsters, but since reach doesn't do anything its ok.
it takes the description word for word, and on the statblocks it defines the reach on everything
I don't seem to find any mention of rch property in the Midi code, so I don't think there's any special handling
k, I just looked at the other sources of monsters and its just the importer monsters that do this, its probably a non issue till reach starts getting automated by something.
the srd monsters list reach in them too but they don't check the box for reach
Either way I'm all set thanks!
Does any one know of an active effect or a midi flag that can cause an effect to trigger when an actor is healed? My goal is to have an actor gain a bonus on attack rolls for one round after being healed
I've tried looking around (mostly at beacon of hope automations as it is vaguely similiar), but to no avail. I looked in to hooks a bit,but macro polo suggested I ask here as there isn't a "on heal" hook
Does it happen to anyone a specific caster heals, or is it a thing for a certain character who receives healing
world script territory
unless its part of a heal item then its as simple as adding an ae to it
I would go low tech and just give the receiver a Healing Boon feat. When they receive healing they click it, triggering the 1 round buff.
heh, give them a reaction targetted
Yeah is this my current solution, I was just hoping to automate it (my table loves automation lol)
It's more automation than having to manually add in the boons to their attacks lol.
It is an effect that an item gives to a character that is attuned to it. So only one character (the one with the item) would get the buff when healed
a free reaction on isdamaged, can even filter for damage type I think now
I don't use the reaction automation since I find it bogs down combat, but also sounds like it's expanded since I last looked
I put a sound hook on the reaction prompt so the whole table yells at the user whose not paying attention and only have a 10 second time out for the prompt
is that once per day or something?
I'd share the hook but my server just decided to go into its maintenance and I'm bored at work, someone post a problem with midi
Hey MidiQOL is no longer bringing me coffee in the morning. How come?
with or without ?! 😅
I mean if you're offering, I could use some automation for my storm sorcerer player so she can swoop around but preferably with all 99 edge cases of flying 10 feet covered and with animation
My big wishlist item to make currently is a pudge hook ability like from dota2
Whenever they regain hitpoints
which edge cases? 🤔
So something like absorb elements could have a macro already made that could be adapted.... interesting I will look into that after work
OK so what would that bonus be?
I'd use shield, absorb elements has an item macro that will get in the way
The bless effect ideally, + 1d4 on attack rolls and saving throws
( 🤓 bless doesn't do ability checks)
Oh lmao
I'll check out shield then after work 🙂 d
Your item is right up the alley of a fun new automation, I suspect bugbears fiddling atm with it
situational reactions
That would be excellent ! (And much appreciated 🙂 )
Please help with two things:
- How to correctly specify the number of uses of the Optional Bonus Effects effect?
Option flags.midi-qol.Optional.1.attack.all - doesn't work. - Can't make a critical hit effect on Assassinate (rogue).
Try this.
-
Drag the Item on the sidebar and delete the one from the actor's inventory.
-
Create a DAE on the item which should have in:
a. Details tab:Transfer to actor on item equipchecked,
b. Effects tab:macro.itemMacro | Custom | -
Copy paste the macro in the ItemMacro of the item and CHANGE the
itemNamein the first line of it to match the name of the Item, -
Drag the item back onto the character sheet and equip (and attune to, if needed) the item
-
(optional) let me know if it works correctly 😄
Is there anything in dae + midi, that would check if the ability still has uses and if it does, whenever you roll any skill check, you can add a d6 or not, similar to bardic? (Im looking at Knowledge from a Past Life)
Search the midi readme for optional.name
and it is precisely what bardic inspiration does
Yeah, but for example: lets say you can use the thing 3 times per long rest, if you decide to roll, would it automatically decrease the usages to 2 or would i need a macro for that?
read the readme section on that feature, its all right there, the answer is yes
for learning, can I use args onUpdateActor to trigger a macro whenever something in the actor is changed? similar to how a hook would work?
It is an updateActor hook essentially
It monitors for whatever is set in ```js
key: 'flags.dae.onUpdateTarget',value: ${itemName},ItemMacro.Item.${item.id},system.attributes.hp.value,mode: 0}
like `system.attributes.hp.value` in this case
DR is usually a set number of damage reduction
You could give them healing resistance? I guess?
dr instead of DR and then use the autocomplete for the right one
that's noice. Is there somewhere I can check all the args passed?
and then choose Custom | Healing
Thank u
go to https://gitlab.com/tposney/dae/-/tree/v10
search for onUpdateTarget and then expand the Special flags.dae...
It mentions the set lastArg that the macro is called with
Thank you! 😄
I suppose I can't have macro.ItemMacro pass args as well if I use this, right?
or it makes no difference?
What I am doing in this one, is to have a way to share the macro easier.
You can create the flags in the DAE directly easily, alongside the macro.itemMacro you want
The shared one does this.
The Item has a macro.itemMacro by default on it.
When you attune and equip to it, that becomes a flags.dae.onUpdateTarget.
When you break attunement of unequip, it changes back to macro.itemMacro
You can omit this step entirely. It all depends on what you want to do.
you can also pass extra arguments to the flags.dae.onUpdateTarget as ```js
key: 'flags.dae.onUpdateTarget',value: ${itemName},ItemMacro.Item.${item.id},system.attributes.hp.value,@attributes.spelldc,"wis",mode: 0}
and then get them inside the macro
In this case args[1] would be @attributes.spelldc
args[2] would be "wis" etc
hmmmmmmmmmmmmmmmmmmmmmmmmmmm that's veeery interesting
so I could, for example, pass spell slots and have macro trigger whenever they are updated (a spell is cast)
That would be better served as an Actor onUse midiqol macro
if (args.item.type === "spell") { /*do stuff */ }
//args.item as of the latest MidiQOL versions
true, it's cos I have a lot of homebrew conditions I use on my game. One of them makes all spells cast by the affected player cost 2 spell slots instead of one.
wrote a macro for it using hooks and world script, but was looking for a simpler way to do it
that hurts 😛
I meant the double the spell slots for the player
The wiki has the explanation of DR and dr
I had a genius idea today while on lunch
everyones always asking how to make a creature immune to a specific custom active effect
and I think I got it and its ridiculous
lets say I'm known to be a harsh DM 😆
Give them a suspended effect by the same name
harsh in a way that my challenges are hard, not that I'm rude or rule enforcer on players
that's... really genius
If it has to be the same status id, then precast/preapply the actual same active effect on them and then suspend it
I think you need to change the default from stack by origin to stack by name though
but aren't dfreds all configured as "non-stackable by origin"? Would it work?
which imo the default should be name
ah, you were faster than me
What module gives us the stacking? Dfreds or DAE?
I've been using both for so long that I don't even know
I mean cue, Zhell pointing out none of us ever know whats core or midi lol
to be honest, I don't even know what's core anymore. Another day I was asking Zhell's help on macro-polo thinking what I was asking was core, but it was midi
and I got hit with the chair
yup, just tested it, and it doesn't work with dfreds effects. Created a Blinded suspended effect and tried applying Blinded on the actor.
but I'm wondering now why "do not stack by name" isn't the standard
Fwiw, you can change them
and it is indeed working perfectly when set to name
I wonder if he could give us a setting to change the default stack setting in dfreds
that way we don't have to duplicate everything
Stacking is DAE
Can anyone see a point to origin instead of name by default?
conservative defaults, i would imagine
Its technically all a janky solution so I doubt its worth a request to change a default setting. I'm abusing midi's ignorance of suspended effects to pull off a custom immunity. Its still totally possible manually though just gotta find the players sources of the effects and set them to name instead of origin.
How can I make every potion heal for x times hitdice instead of x times d4?
Example: Potion of healing heals a barbarian for 2d12 + 2
heals a wizard for 2d6+2
Macro territory, I don't think there is a value you can reference for the size of the die.
would you kindly help me make an item macro that heals for x times hitdice? How to I reference the hitdice of the actor that uses the item?
alright, thanks tho 🙂
whoever does make it I think wants what I just found though
you need to define that value in the actor data as a const, and then reference it in the dice equation for the MidiQOL.applyTokenDamage function. You could search for this here and see other macros using that function
will do
and since its a potion you need to define the actor/target too
What about multi classed ones? Higher HD?
interesting question, I didnt consider this... probably higher HD?
or whatever the base class is? 🤔
you tell me what you decide 😅
he sounds like hes making your macro so just make the decision and he'll put it in
my players mostly hord their items anyways
bugbear thinks in binary, he's probably got your macro waiting for the input
Man Fey Ancestry is messed up with monsters of the multiverse
I dunno how to handle it with the wiki, theres two different versions and we actually have two automations of it too
midiqol does the old fey ancestry and CPR does the new version
They're different?
the old one combined trance and fey ancestry I think
midiqol's sample does the trance half but is called Fey Ancestry
How does it do trance?
condition immunity
That's just not sleeping
they have zero health
They can still go unconscious
they still go prone, theres no real difference mechanically
once you are zero hp combat attacks behave differently anyway
Most sleep automations just look for the fey ancestry or elf race
So, doing it this way seems silly
oh shit yeah, that is a bad one
well...
only the strength/dex save thing would be missing
oh actually no
Huh
thanks to statusEffect this doesn't matter
the zero hp elf gets unconscious through prone
cause it all combines
Or you can just not use this jank
true
but I'm not the arbiter of levels of automation, technically it still counts just by adding the language heh
I think I will denote old and new fey ancestry
Adding a language hardly an automation
I'm working on the race checklist for the wiki
yeah but not everyone plays at our automation level
Plus what if they're using Tasha's?
Basically is it setup for effect transfer and/or add something to the sheet automatically.
or does it follow midi's target/range setting shennanigans
(or does it have midi checkboxes checked on the details)
I am pondering using 2 checkmarks one for partial automation and one for thorough automation though.
Powerful build is an easy automation that nobody has done.
then again its probably best not to use an ae for this
here?
Yeah ddbi adds it, but I was pondering just doing the flag for it in an ae for a premade item like powerful build
a bit overkill, but doable
yeah I'm working on the wiki today
so I'm working on race feature automations available from the 6 main modules/sources
An ae for every trait seems like a needless waste of performance
There is a reason ddbi doesn't do it that way
it would be extremely easy to flag actor data changes on an item and apply them on create
yeah I was pondering an effect macro on create
Why
oh good point I guess its still an ae lol
just item flag data, and a small worldscript to hook on create of an embedded doc
add data from item
done
cut me some slack my eyes are seeing the grid overlay of my spreadsheet still reading discord chat
Or just check it once, generally speaking player races don't change
yeah true, but I still have to include it in the list as not automated by anyone
Janky way. MidiQOL item on use on the healing potion
ItemMacro | Before damage is rolled
const { hitTargets, workflow:{item:itemD} } = args[0];
const healingDefault = duplicate(itemD.system.damage.parts);
let healingDface;
const hitActor = hitTargets[0].actor;
if (hitActor.type === 'character') healingDface = Math.max(...Object.entries(hitTargets[0].actor.getRollData().classes).map(t=>t[1].hitDice.at(1)));
else healingDface = hitActor.getRollData().attributes.hp.formula.split('d')[1].at(0)
healingDefault[0][0] = healingDefault[0][0].replace(healingDefault[0][0].split('d')[1].at(0), healingDface);
await itemD.update({"system.damage.parts":healingDefault})
Oh nope it will fail for d12... will fix when I am back at a PC
Because it's in core
I do plan on going back through and X'ing out anything that shouldn't be automated
Make a mark for core feature honestly
wonder if a module could do what midi does with magic resistance
if a feature exists that is called powerful build, add the flag
but...only cause I've seen it now, its not always called powerful build
Centaur has a feature that is exactly like powerful build but is called Equine Build
matching by name is a losing game
yeah
Yo, what would be the right Attribute Key for an Effect to give advantage on a saving throw?
flags.midi-qol.advantage.ability.save.str for Strength
I need it for any/all saving throws
If thats possible, or do I need to do it individually
nvm
flags.midi-qol.advantage.ability.save.all
Thanks mate.
Been a while since I played around with effects.
are you making Magic Resistance?
No, creating a subclass feature for a 3rd party Pally Oath
ok, was gonna warn you that you don't make magic resistance that way. For Magic Resistance midi has a special flag but 99% of the time all you need is an item called "Magic Resistance" in the inventory of an actor for magic resistance to work.
Alright yeah thanks, good to know
the flag for magic resistance is meant for the rare times magic resistance is a temporary effect otherwise you can just rely on the auto detect of the item
One of my longest oldest reliable automations has started to fail in midi 41 and am unsure how to fix it.
Divine Sense:
Please help me make a status that gives a bonus to damage once per turn.
I tried using flags.midi-qol.optional.NAME.damage.all attribute but after using bonus the status disappears regardless of what is specified instead of NAME.
I also tried to modify the Sneak Attack 10.0.33 macro, but I don't understand it and I couldn't set a fixed damage value that is not tied to accuracy and class.
what are you trying to make? not foundry terms, dnd5e terms, is it published? whats its name?
I'm trying to add an NPC damage bonus applied once per turn.
I tried using every, turn as the `NAME' and entered the number of uses. All these options worked the same way: When an attack was made, a window with a request was displayed, and the status with the effect disappeared after that.
can you show me the active effect's effect tab on the feature you made the optional.NAME's in. I suspect you made the mistake of actually using optional.NAME
yeah you misread the readme, let me show you a sample so you are set right
Looks like it's potentially a bug in midi
also fyi, this is a bad example cause the very key you want isn't shown lol
oh god no, I need midi 41 to be safe lol
We gotta get it to tposney quickly cause I think he's sitting on 42 ready to drop soon
Could also be bad things being sent to the find nearby
@scarlet gale You were right btw about missing documentation, just add .fail on the end to get them to prompt on fails only.
I remember a changelog about find nearby...something about maxsize being removed or added...
I think you just nailed it now I need to find it, I think its midi 37
Yea, might need to be looked at
its mentioned in the changelog that its a breaking change
Did I understand correctly that the problem is in the MIDI itself? Looking at the example of the Bardic inspiration, I do not understand what to pay attention to.
Breaking Addition to findNearby to allow inclusion of incapacitated actors, MidiQOL.findNearby(disposition, token, distance, {maxSize, includeIncapacitated}). Only breaking if you were including a maxSize before, you'll need to use {maxSize: size} instead.
it was added in midi 31
If nobody gets to it, I can later when I'm not at work
k I will attempt to sus it out while I'm doing the datas
did you read the readme?
your mistake was you are using the switches in the name of the key instead of in the effect value for the right key
My example was bad because bardic inspiration is the exception to the very key you need to add:
you need that key, but NAME needs to be changed to the name of your feature
and then the effect value for this key should have turn in it
I do not know if .count keys can take two values
My guess would be turn,ItemUses.ItemName if I had to guess
where ItemName is the name of the item with charges in the actors inventory
Heres another thing you can use for count:
yeah I think this is a bug we can't fix with a change to the macro
I think its a failure to null check
I still don't understand.
From what I see, the system does not care what is written instead of NAME. Also, the system does not care about Mode. Upon successful execution of the function, the status immediately disappears.
I changed the names in the Attribute Key. Changed the Change Mode. In the Effect Value section, I tried to specify options similar to the examples from Lucky (Uses per day) 10.10, but none worked (critical errors). But when I enter the value of the dice, everything works but once.
you are not making all the necessary keys. Very importantly you need the .count key AND, the absence of that key, if you read my images above:
no, just pass it an actual maxsize instead of a null options
{maxSize: whatever}
I was about to ask this before I changed to answering them lol
I was like...what if I just make a size
what are the codes for the sizes?
specifically gargantuan
thank you
@edgy pagoda the reason why you should typically use the features name in the key is because generic terms can over time get forgotten and you won't realize you have them on two different automations in your world. Using the features name makes it safest so that you don't reuse it. But whatever you do, Don't use NAME.
Even though DAE tries to make you use NAME, rename it this is one of those keys you don't want dae auto completing
@honest wave
Change Enemy to Ally to target allies
Change Special to Self if you want to include the caster
I have renamed it several times. But the problem remains in place: after the bonus is applied, the status disappears.
again, you are not including a count lol, it will delete itself if you don't give it something to consume, just like bardic, I've shared and even highlighted the text in the readme to you
Share me what you have again, maybe theres another issue, is it on a feature as transfer on equip?
Perfect, thanks
Theres more to this though:
The second drop down in this image needs to be setup my way(or don't ignore defeated). This setting has weird results on levels maps and with walls with height.
Alright, I've tested it a bit and it seems to work fine.
I don't deal much with wall heights/levels anymore, so not going to be a common issue thankfully
the issue with them is that midi doesn't know what 3d is unless you have levels auto cover and even then it may not help
Gotcha, will keep it in mind ty
flags.midi-qol.optional.SomethingLessGeneric.damage.all
flags.midi-qol.optional.SomethingLessGeneric.label
flags.midi-qol.optional.SomethingLessGeneric.count
flags.midi-qol.optional.SomethingLessGeneric.criticalDamage
@edgy pagoda
replace SomethingLessGeneric with the name of the feature but change the name of the feature you made cause thats WAY to generic
or use mine, its unique enough
also FYI, I don't know if count takes 2 values
As for why its auto deleting, its because you have your time playing
you aren't in combat and your seconds are set to 10 seconds
you should clear out the durations entirely
@edgy pagoda Is it once per turn endlessly or does it have charges too?
Your item has no charges setup, so if its meant to be once per turn endlessly forever, take off the ,Itemuses.SomethingLessGeneric in my above effect image. Otherwise add charges to your feature.
Also remove the action type on the item:
(Clear the formula before you clear the action type)
I gave you an example of charges too in the image
That's how it should be! Thanks!
Additional damage is applied once per turn and has no restrictions in quantity.
There is another question: with your option, the request window is displayed twice and with different values.
I have removed the specified elements
oof
You aren't going to like my answer bud
Trying to do a midi overtime regeneration and I keep getting an error about opening or closing of ( ). I cannot figure out what I am missing. Will one of you wizards please instruct an apprentice like me?
turn=start,
damageRoll=max(1, floor(@details.level /2)),
damageType=healing,
condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max
Try Math.floor, but also heres my preferred regeneration:
turn=start,
damageRoll=10,
damageType=healing,
condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max,
rollMode=gmroll,
label=Regeneration(Fire or Acid prevents)
ask in macro polo if Math.max is also a thing
turn=start,
damageRoll=10,
damageType=healing,
condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max,
rollMode=gmroll,
label=Regeneration(Fire or Acid prevents)
try ini coloring for these blocks, little easier to read
So the roll isn't a flat 10. its based on total character level. But I do like adding the lable.
Ill pop into macro polo thank you 🙂
yeah I suspect your () error is cause its technically a macro not a damage formula on an item
I think it wants Math.floor
Is there a way to make an attack/failed saving throw give a creature resources back?
I'm trying to make a boss where if the a player fails/is hit by certain abilities the boss regains charges to powerup an ability.
Is there an easy way to do this?🤔
Basically trying to give it "resources.legres.value"
on use macro for the feature the boss uses
If this.hitTargets != 0 { Stuff}
if its a save I don't know that one
but its probably this.save something so you could ctrl F in here for someone that wrote one already
well gang. Macropolo sent me back here lol
I see you refering to "this.save or something" xD
Yeah maybe I wasn't clear enough, just share them the code and deny any reference to midi lol
Too late, honeybadger is in both channels lol
I am confused. What are you using right now @lean holly
async function wait(ms) {return new Promise(resolve => {setTimeout(resolve, ms);});}
if(args[0].hitTargets.length === 0) return {};
let tokenD = canvas.tokens.get(args[0].tokenId);
let actorD = game.actors.get(args[0].actor._id);
let target = canvas.tokens.get(args[0].hitTargets[0].id);
let itemD = args[0].item;
let gameRound = game.combat ? game.combat.round : 0;
const diceMult = args[0].isCritical ? 2: 1;
const numDice = 3 * diceMult;
args[0].isCritical ? numDice * 2 : numDice;
let damageRoll = await new Roll(`${numDice}d6`).roll();
await new MidiQOL.DamageOnlyWorkflow(actorD, tokenD, damageRoll.total, "necrotic", [target], damageRoll, {flavor: "Necrotic Bite - Damage Roll (Necrotic)", damageList: args[0].damageList, itemCardId: args[0].itemCardId });
await MidiQOL.applyTokenDamage([{damage: damageRoll.total, type: "healing"}], damageRoll.total, new Set([tokenD]), itemD, new Set());
const effectData = {
label: "Drain",
icon: "icons/skills/wounds/blood-drip-droplet-red.webp",
origin: args[0].uuid,
changes: [{
"key": "system.attributes.hp.max",
"value": `-${damageRoll.total}`,
"mode": 2,
"priority": 20
}],
disabled: false,
duration: { seconds: 86400, startRound: gameRound, startTime: game.time.worldTime },
flags: {
dae: {
specialDuration: ['longRest']
}
}
};
await MidiQOL.socket().executeAsGM("createEffects", {actorUuid: target.actor.uuid, effects: [effectData]});
//let hpNow = target.actor.system.attributes.hp.max;
//let updateHP = hpNow - damageRoll.total;
let updateHP = target.actor.system.attributes.hp.max;
let the_message = `<p>${tokenD.name} drains ${target.name} of ${damageRoll.total} pts from their maximum Hit Point value!</p><p>${target.name} now has Maximum Hit Point maximum of ${updateHP}.</p><br><p><b>If it reaches O, they die!!</b></p><br><p> ${tokenD.name} regains ${damageRoll.total} Hit Points back!</p>`;
await wait(600);
ChatMessage.create({
user: game.user.id,
speaker: ChatMessage.getSpeaker({actorD: actorD}),
content: the_message,
type: CONST.CHAT_MESSAGE_TYPES.EMOTE
});
turn=start,
damageRoll=max(1, floor(@details.level /2)),
damageType=healing,
condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max
This is the OG overtime I am working with. I added the label part after seeing Moto's example.
The error I am getting:
Uncaught (in promise) Error: undefined. Unbalanced group missing opening ( or closing )
turn=start,
damageRoll=Math.max(1, Math.floor(@details.level /2)),
damageType=healing,
condition=@attributes.hp.value > 0 && @attributes.hp.value < @attributes.hp.max
``` this?
Where in this would one best put in such a line? 🤔
bugbear, same error.
@umbral basin quick recap of the issue?
@violet meadow
Yes, it gives me a roll of 0.5 at level 1
and does it add 1?
But it should be a min of 1
but did their hp go up?
It seems to.
its ugly, but they don't call me janky for nothing
Is it possible to give proficiency in skills upon equipping/attuning to an item?
yes but that is extremely overkill and recommended against
applyCondition instead of condition?
I think they are copying the regeneration premade
Why is it overkill?
A weapon of my players gives proficiency to Sleight of Hand when its attuned to, would rather not have it unattuned and forget about it
@lean holly can you show us the error?
Yes I was, and just trying make it based on character level rounded down min of 1
foundry.js:9761 Uncaught (in promise) Error: undefined. Unbalanced group missing opening ( or closing )
[Detected 2 packages: system:dnd5e, midi-qol]
need to go get dinner, will circle back later
that error doesn't always mean () it can be {}
send me the item in a dm
I'm using the midi Paladin auras. They are unfortunately working for everyone within 10' feet, whether marked friendly or hostile. Aura of Courage actually puts the icon on the the token. Aura of Protection doesn't put the icon on, but it does give the saving throw bonuses. Aura of Protection says it needs BABonus, Devotion and Courage ask for Active Auras. All of those are running. None of them say they need to be renamed to get rid of the 10.0.10, but I tried them both ways and that doesn't change things.
If you have time later please help me xD
the problem there lies in the fact that midi is splitting on , and your formula contains a , so it gives the roller function a formula of max(1 which has imbalanced (
the midi samples are old, the bab one is literally dead in the water don't use it.
i added ( ) around the whole thing that is why it has a ( before max for me.
how would u code this? As in, letting the PC choose the amount of charges, rolling xd4 and spending that many charges .3.
is there an alternate character they can use?
no
just don't use max
i guess
does ceil give the right values?
1 for lvl 1, 1 for lvl 2, 2 for lvl 3, 2 for lvl 4... etc
the actual book rule is always round down, but floor will cause 0 at level 1
wait a minute...is this a class feature @lean holly
I got a really funny idea
make it a scale value
yeah scales are perfect for this
It’s a race feature. If it says class it’s wrong.
Wereravens
From Curse of Strahd book.
a janky solution would be to give their class a custom scale
then call the scale in that feature
oh wait its a monster?
yeah just do round
who cares if its 1 more sometimes
Math.round
and drop the max
If you also use my suggestion of putting in a whisper then the players will never know
if you are using CPR, use his auras. If you aren't using CPR, Mr.Primate shared a functional active aura aura of protection in kandashi's server in the active auras channel.
you could setup a scale value on their class item and then call it in the racial feature, or just wing it and use round(@details.level / 2)
I’d use Build a Bonus. Its resource consumption options can do exactly what you’re looking for.
that item is all macro territory
theres been similar stuff done like that that included "Holy Power"
@lean holly Woops sorry take off the math in my example, I'll edit it now...
I am using CPR. His auras say the Effect Auras setting must be enabled. What is that?
chris' premades has a divine smite that's similar but cant reverse engineer it
its module settings
but yeah it sounds like something an issue could be made about that you cant do a little bit more advanced rolls because of , 😄
its not similar at all actually, as divine smite only lets you expend 1 thing
In midi qol?
you want the Holy Power shennanigans that were made 2-3 months back by some folks
Or you could look at Lay on Hands in midiqol samples
I'm not finding it so far
Make the damage bonus optional, set resource consumption to the item’s uses, give it a scaling value of 1d4.
but since it is a racial feature going the scale route is still advisable. All that take that race get that feature right?
you can't do that because you can pick X charges to use in one roll
I didnt think scale worked on Races yet?
ah right.... >.< sleepy brain
I think we're telling you to just attach it to the actual class item but call it in the racial feature
BaB handles that automatically.
I get that, but isn't that also the feature that doesn't work with midi?
gonna have a short think on what to do.
this should work but its not asking me :<
wait this doesnt work with midi
D:
You want damage rolls, not attack rolls.
do you fast forward Saga?
Nope.
@modern badger do you fast forward?
Yeah, maybe it won’t ask then.
Try it out, if it doesn't work, try turning off fast forward
You didn’t screenshot it but make sure that bonus is set to optional as well.
I'm 99.9% sure this is pointless if fast forward is non negotiable hehe
If you want to use fast-forward or auto-rolling or whatever, macro it may have to be.
just fast forward is the problem, auto roll is fine
if only chris' premades let me look at the guts
@tepid dock was the user who made a bunch of Holy Power items, maybe they can share insight on how to help
Chris' Premades
ty
His auras don't show effects on tokens
It does, it’s all on GitHub.
But also I can probably write a macro for you later tonight if no one else helps you out, what you’re doing is similar to a Dream Druid feature I’ve automated.
:0
well I'd be v grateful u.u
it takes a value you enter and then applies a damage
oooo
it would be the value you enter *1(d4)
lay on hands is technically an item you roll that takes an input and then applies damage to the target(healing damage)
and expends that amount of the resource
I'm gonna take a crack at it using lay on hands but I'd still appreciate the help offer
😓
Yep, I’ll follow up later.
you gonna need to add a lil more context than that
If you are trying to use lay on hands, it checks for paladin and resource linkage and returns a notification if theres a problem so start with those two
Just seeing this, anyone have a TL;DR?
Tart wants to make an item that I thoguht sounded alot like your Holy Power features:
Is there a module or a way to automate players polymorphing others, or does the DM have to handle that in the case of enemies and the DM or affected player handle it if it's another PC?
I see videos online of people doing this, but I'm not finding those modules
I'd use CPR's quick insert summoner macro for that
I'll go check that out, thanks
its in the same compendium as the generic actions
it won't set the permissions right since the summoner summons it, but you can use a hotbar macro to swap permissions
OR, you could be really crazy and make it run the macro on the target...
advanced macros lets you run macros as other users
It may be time for me to learn about macros
I can't say I can help too much. Most of the custom holy power items I have created run off resource points. There aren't really weapon charges. You could try using the module Magic Item, but I believe is deprecated, or just not supported and has some bugs. But Magic Item does let you have charges on items and regain them on LR. I still use it and it some times is a pain.
Its usually wise to set a weapon up like the lay on hands feature so that you aren't consuming charges everytime you swing the weapon anyway
aka resource pool setup via dae on the weapon
Hey all, two questions.
- Is there an OverTime tag that lets you add a description (not a name like label)?
- Is there a way to make someone immune to an effect after the save? I have saveRemove=true but I was wondering if there was something else that would be better as this will reapply if the character re enters the aura.
@violet meadow
let targets = await MidiQOL.findNearby(null, paladin, distance, {maxSize: grg});
What am I doing wrong? should it be {maxSize: grg, null, null}?
No to a description but the label is basically a description if you look at what it is on the prompt/chatcard. As for immunity, CPR has a bunch of "stench" monster features that pull this off.
CONFIG.DND5E.tokenSizes.grg
instead of grg
or define grg first